package leetcode;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Deque;
import java.util.ArrayDeque;
public class leetcode599两个列表的最小索引值 {
	public static void main(String []args) {
		String list1[]  = {"Shogun", "Tapioca Express", "Burger King","kfc"};
		String []list2 = {"Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"};
		findRestaurant(list1,list2);
		
		
	}
	public static String [] findRestaurant(String []list1 ,String list2[]) {
		HashMap<String,Integer> map =new HashMap<>();
			int minIndex = 2001;
//			String []res;
//			ArrayList<String> res = new ArrayList<>();
			Deque<String> res =new ArrayDeque<>();
			for(int i = 0;i < list1.length;i++) {
				map.put(list1[i], i);
			}
			for(int i = 0;i < list2.length;i++) {
				if(map.containsKey(list2[i])) {
					if(minIndex > map.get(list2[i]) + i ) {
//						res.add(e);
						while(!res.isEmpty()) {
							res.removeLast();
						}
						res.add(list2[i]);
						minIndex = map.get(list2[i])+i;
					}
					else if(minIndex == map.get(list2[i])+i) {
						res.add(list2[i]);
					}
				}
				else {
					map.put(list2[i], i);
				}
			}
//		String result [] = res.toArray(result);
			String result [] = new String[res.size()];
			int i=0;
			for(String value : res) {
				result[i++]=value;
				System.out.println(value);
			}
			
		return result;
	}
// 想多了好像      想的太简单了
//	public static String [] solution(String list1[],String []list2) {
//		HashMap<String,Integer> map = new HashMap<>();
//		int len1 = list1.length;
//		int len2 = list2.length;
//		int i = 0;
//		for(i =0; i < len1 && i < len2 ;i++) {
//			map.put(list1[i], i);
//			map.
//		}
//	}

}
